package com.herench.bs.agent;

import java.util.List;
import java.util.Map;

/**
 * 门诊业务类
 * Created by luoxiaoming on 2017/8/9.
 */
public interface IOutpatientClinicAgent {


    /**
     * 查询出诊科室
     *
     * @param channelCode  渠道编码
     * @param hospitalCode 医院编码
     * @param state        状态 1：只预约；2：只当日；3 都出
     * @return 出诊科室列表
     */
    public Map<String, Object> loadVisitDepts(String channelCode, String hospitalCode, String state);

    /**
     * 查询科室排班数据
     *
     * @param channelCode  渠道编码
     * @param hospitalCode 医院编码
     * @param deptCode     科室编码
     * @return 执行后的数据
     */
    public Map<String, Object> loadDeptScheduling(String channelCode, String hospitalCode, String deptCode, String appointDate) throws Exception;



    /**
     * 查询医生的排班数据
     *
     * @param channelCode  渠道编码
     * @param hospitalCode 医院编码
     * @param deptCode     科室编码
     * @param doctorCode   医生编码
     * @param startDate    开始日期
     * @param endDate      结束日期
     * @return 执行后的数据
     */
    public Map<String, Object> loadDoctorScheduling(String channelCode, String hospitalCode, String deptCode, String doctorCode, String schDate, String startDate, String endDate) throws Exception;


    /**
     * 查询当天科室排班数据
     *
     * @param channelCode  渠道编码
     * @param hospitalCode 医院编码
     * @param deptCode     科室编码
     * @return 执行后的数据
     */
    public Map<String, Object> loadCurrentDeptScheduling(String channelCode, String hospitalCode, String deptCode) throws Exception;

    /**
     * 查询当日医生的排班数据
     *
     * @param channelCode  渠道编码
     * @param hospitalCode 医院编码
     * @param deptCode     科室编码
     * @param doctorCode   医生编码
     * @return 执行后的数据
     */
    public Map<String, Object> loadCurrentDoctorScheduling(String channelCode, String hospitalCode, String deptCode, String doctorCode) throws Exception;


    /**
     * 查询分时段号源信息
     *
     * @param channelCode  渠道编码
     * @param hospitalCode 医院编码
     * @param scheduleDate 排班日期
     * @param doctorCode   医生编码
     * @param deptCode     科室编码
     * @param period       时段
     * @return 查询数据
     */
    public Map<String, Object> loadTimePeriodDoctorScheduling(String channelCode, String hospitalCode, String scheduleDate, String doctorCode, String deptCode, String period);


    /**
     * 验证身份信息接口
     *
     * @param channelCode  渠道编码
     * @param hospitalCode 医院编码
     * @param idCard       身份证号
     * @return 核对结果
     */
    public Map<String, Object> checkIdentity(String channelCode, String hospitalCode, String idCard);


    /**
     * 验证就诊卡信息
     *
     * @param channelCode  渠道编码
     * @param hospitalCode 医院编码
     * @param idCard       身份证号
     * @param cardId       卡id
     * @return 验证结果
     */
    public Map<String, Object> checkTreatmentCardInfo(String channelCode, String hospitalCode, String idCard, String cardId);

    /**
     * 预约
     *
     * @param channelCode  渠道编码
     * @param hospitalCode 医院编码
     * @param doctorCode   医生编码
     * @param deptCode     科室编码
     * @param scheduleDate 预约日期
     * @param timeDesc     时段
     * @param regFee       挂号费
     * @param clinicFee    诊查费
     * @param otherFee     其他费用
     * @param clinicCharge 总费用=挂号费+诊查费+其他费用
     * @param username     预约账号
     * @param cardId       卡id
     * @param feeType      挂号收费模式 0:预约时未扣费 1:预约时已扣费  不为空
     * @param idCard       预约患者身份证号
     * @param beginTime    时段开始时间
     * @param endTime      时段结束时间
     * @param chargeType   费别
     * @return 预约结果及信息
     */
    public Map<String, Object> doAppoint(String channelCode, String hospitalCode, String doctorCode, String deptCode, String scheduleDate, String timeDesc, String regFee, String clinicFee, String otherFee, String clinicCharge, String username, String cardId, String feeType, String idCard, String beginTime, String endTime, String chargeType) throws Exception;


    /**
     * 更新预约号的状态(提供非患者使用终端使用)
     *
     * @param channelCode     渠道编码
     * @param hospitalCode    医院编码
     * @param appointmentCode 预约id(院内)
     * @param userPersonId    预约账号id
     * @param idCard          身份证号
     * @param state           状态值
     * @return 执行结果
     */
    public Map<String, Object> refreshAppointRecord(String channelCode, String hospitalCode, String appointmentCode, String userPersonId, String idCard, String state);


    /**
     * 精确查询预约记录
     *
     * @param channelCode  渠道编码
     * @param hospitalCode 医院编码
     * @param userPersonId 挂号用户id
     * @param idCard       身份证号
     * @return 预约记录
     */
    public Map<String, Object> loadAppointRecords(String channelCode, String hospitalCode, String userPersonId, String idCard) throws Exception;


    /**
     * 根据身份证查询预约记录
     *
     * @param channelCode  渠道编码
     * @param hospitalCode 医院编码
     * @param idCard       身份证号
     * @return 预约记录
     */
    public Map<String, Object> loadAppointRecords(String channelCode, String hospitalCode, String idCard);

    /**
     * 根据用户查询预约记录
     *
     * @param channelCode  渠道编码
     * @param hospitalCode 医院编码
     * @param userPersonId 挂号用户id
     * @return 预约记录
     */
    public Map<String, Object> loadAllAppointRecords(String channelCode, String hospitalCode, String userPersonId);


    /**
     * 医生停诊
     *
     * @param hospitalCode 医院编码
     * @param stopData     停诊数据 包含字段（号表日期，号表名称，时段，科室代码，医生编码等）
     * @return
     */
    public Map<String, Object> appointStop(String hospitalCode, List<Map<String, Object>> stopData);

    /**
     * 预约报道
     *
     * @param channelCode         渠道编码
     * @param hospitalCode        医院编码
     * @param appointmentCode     预约编码
     * @param hisClinicAppointsId HIS预约ID
     * @param userPersonId        挂号用户id
     * @param recordId            挂号ID
     * @return 预约报道结果
     */
    public Map<String, Object> checkAppointmentState(String channelCode, String hospitalCode, String appointmentCode, String hisClinicAppointsId, String patientId, String userPersonId, String recordId) throws Exception;


    /**
     * 预约号生成支付订单
     *
     * @param channelCode
     * @param hospitalCode
     * @param appointmentCode
     * @param userPersonId    挂号用户id
     * @return 执行结果
     */
    public Map<String, Object> generateOrdersForAppointment(String channelCode, String hospitalCode, String appointmentCode, String userPersonId);


    /**
     * 预约报道支付确认接口(提供给支付平台支付完成之后回调)
     *
     * @param channelCode  渠道编码
     * @param hospitalCode 医院编码
     * @param recordId     挂号ID
     * @param openId       支付用户唯一ID：微信用户唯一ID、支付宝用户唯一ID、银行卡号
     * @param orderId      订单ID
     * @param patientId    患者ID
     * @param userPersonId 用户ID
     * @param orderFee     支付金额
     * @param payTime      支付时间
     * @param payType      支付类别
     * @param tradeNo      交易流水
     * @return
     */
    public Map<String, Object> payConfirmForAppointment(String channelCode, String hospitalCode, String recordId, String openId, String orderId, String patientId, String userPersonId, String orderFee, String payTime, String payType, String tradeNo) throws Exception;

    /**
     * 取消预约
     *
     * @param channelCode  渠道编码
     * @param hospitalCode 医院编码
     * @param id           预约id
     * @param userPersonId 挂号用户id
     * @param idCard       挂号用户身份证号码
     * @return 取消预约结果
     */
    public Map<String, Object> doCancelAppoint(String channelCode, String hospitalCode, String id, String userPersonId, String idCard) throws Exception;

    /**
     * 当日挂号数据保存
     *
     * @param channelCode  渠道编码
     * @param hospitalCode 医院编码
     * @param name         姓名
     * @param gender       性别
     * @param age          年龄
     * @param clinicLabel  号表
     * @param regFee       挂号费
     * @param period       时段
     * @param usePersonId  用户使用id
     * @param idCard       身份证号
     * @param patientId    患者索引
     * @param chargeType   费别
     * @param clinicType   号类
     * @param deptCode     科室编码
     * @param doctorCode   医生编码
     * @param doctorName   医生姓名
     * @param cardId       卡id
     * @param cardType     卡类型
     * @return 挂号结果
     */
    public Map<String, Object> saveRegister(String channelCode, String hospitalCode, String name, String gender, String age, String clinicLabel, String regFee, String period, String usePersonId, String idCard, String patientId, String chargeType, String clinicType, String deptCode, String doctorCode, String doctorName, String cardId, String cardType) throws Exception;


    /**
     * 预约号生成支付订单
     *
     * @param channelCode
     * @param hospitalCode
     * @param appointmentCode
     * @param userPersonId    挂号用户id
     * @return
     */
    public Map<String, Object> generateOrdersForRegister(String channelCode, String hospitalCode, String appointmentCode, String userPersonId);


    /**
     * 挂号支付确认接口(提供给支付平台支付完成之后回调)
     *
     * @param channelCode  渠道编码
     * @param hospitalCode 医院编码
     * @param recordId     挂号ID
     * @param openId       支付用户唯一ID：微信用户唯一ID、支付宝用户唯一ID、银行卡号
     * @param orderId      订单ID
     * @param patientId    患者ID
     * @param userPersonId 用户ID
     * @param orderFee     支付金额
     * @param payTime      支付时间
     * @param payType      支付类别
     * @param tradeNo      交易流水
     * @return
     */
    public Map<String, Object> payConfirmForRegister(String channelCode, String hospitalCode, String recordId, String openId, String orderId, String patientId, String userPersonId, String orderFee, String payTime, String payType, String tradeNo) throws Exception;

    /**
     * 退号
     *
     * @param channelCode     渠道编码
     * @param hospitalCode    医院编码
     * @param idCard          身份证号
     * @param appointmentCode 预约id(院内)
     * @param refund          是否退费
     * @param desc            退号描述
     * @return 退号结果
     */
    public Map<String, Object> retreat(String channelCode, String hospitalCode, String idCard, String appointmentCode, String refund, String desc);


    /**
     * 诊间待缴费列表查询
     *
     * @param channelCode   渠道编码
     * @param hospitalCode  医院编码
     * @param recordId      挂号序列
     * @param patientId     患者ID
     * @param source        挂号来源
     * @param user          用户名
     * @param payState      支付状态
     * @param clinicPayType 诊间结算类型
     * @return
     */
    public Map<String, Object> loadClinicChargeList(String channelCode, String hospitalCode, String recordId, String patientId, String source, String user, String payState, String clinicPayType) throws Exception;

    /**
     * 诊间待缴费列表查询
     *
     * @param channelCode   渠道编码
     * @param hospitalCode  医院编码
     * @param recordId      挂号序列
     * @param patientId     患者ID
     * @param source        挂号来源
     * @param user          用户名
     * @param payState      支付状态
     * @param clinicPayType 诊间结算类型
     * @return
     */
    public Map<String, Object> loadAllClinicOrderList(String channelCode, String hospitalCode, String recordId, String patientId, String source, String user, String payState, String clinicPayType) throws Exception;


    /**
     * 诊间待缴费详情查询
     *
     * @param channelCode   渠道编码
     * @param hospitalCode  医院编码
     * @param recordId      挂号序列
     * @param patientId     患者ID
     * @param paySeq        处方号
     * @param source        挂号来源
     * @param user          用户名
     * @param payState      支付状态
     * @param clinicPayType 诊间结算类型
     * @return
     */
    public Map<String, Object> loadClinicChargeDetails(String channelCode, String hospitalCode, String recordId, String patientId, String paySeq, String source, String user, String payState, String clinicPayType) throws Exception;


    /**
     * 诊间结算数据保存
     *
     * @param channelCode  渠道编码
     * @param hospitalCode 医院编码
     * @param recordId     挂号序列
     * @param idCard       身份证号
     * @param resDate      挂号日期
     * @param transactNo   合同号
     * @param patientId    院内患者ID
     * @param visitNo      就诊号
     * @param paySeq       支付序号
     * @param cardType     就诊卡类型
     * @param cardNumber   就诊卡号
     * @return
     */
    public Map<String, Object> saveclinicChargeData(String channelCode, String hospitalCode, String userName, String recordId, String idCard, String resDate, String transactNo, String patientId, String visitNo, String paySeq, String cardType, String cardNumber) throws Exception;


    /**
     * 诊间结算支付确认
     *
     * @param channelCode  渠道编码
     * @param hospitalCode 医院编码
     * @param paySeq       支付序号
     * @param openId       支付用户唯一ID：微信用户唯一ID、支付宝用户唯一ID、银行卡号
     * @param orderId      订单ID
     * @param patientId    患者ID
     * @param userPersonId 用户ID
     * @param orderFee     支付金额
     * @param payTime      支付时间
     * @param payType      支付类别
     * @param tradeNo      交易流水
     * @return
     */
    public Map<String, Object> payConfirmForClinicCharge(String channelCode, String hospitalCode, String paySeq, String openId, String orderId, String patientId, String userPersonId, String orderFee, String payTime, String payType, String tradeNo) throws Exception;


    /**
     * 诊间结算支付撤销
     *
     * @param channelCode  渠道编码
     * @param hospitalCode 医院编码
     * @param recordId     挂号序列
     * @param patientId    患者ID
     * @param paySeq       支付序号
     * @return
     */
    public Map<String, Object> canceleClinicChargePayment(String channelCode, String hospitalCode, String recordId, String patientId, String paySeq) throws Exception;


    /**
     * 获取挂号列表
     *
     * @param channelCode  渠道编码
     * @param hospitalCode 医院编码
     * @param startTime    开始时间
     * @param endTime      结束时间
     * @param idCard       身份证号
     * @return 查询结果
     */
    public Map<String, Object> loadAllRegistRecords(String channelCode, String hospitalCode, String startTime, String endTime, String idCard) throws Exception;


    /**
     * 诊间退费
     *
     * @param idCard     身份证号
     * @param transactNo 交易号（银行或支付宝的订单流水号）
     * @param describe   退费说明
     * @param money      退费金额
     * @param createTime 退费时间
     * @param cardNum    卡号
     * @param rcptNo     交易流水
     * @return 退费结果
     */
    public Map<String, Object> clinicChargeReturn(String idCard, String transactNo, String describe, String money, String createTime, String cardNum, String rcptNo);


    /**
     * 提取创建患者数据
     *
     * @param idCard 身份证号
     * @return
     */
    public Map<String, Object> extractCreationPatient(String channelCode, String hospitalCode, String idCard) throws Exception;

    /**
     * 提取患者数据
     *
     * @param idCard
     * @return
     */
    public Map<String, Object> queryPatientInfo(String channelCode, String hospitalCode, String idCard) throws Exception;

    /**
     * 发送验证码
     *
     * @param channelCode
     * @param type
     * @param phone
     * @return
     */
    Map<String, Object> sendVerificationCode(String channelCode, String type, String phone) throws Exception;

    /**
     * 获取当日挂号详情
     *
     * @param channelCode
     * @param hospitalCode
     * @param id           唯一ID
     *                     获取预约挂号状态
     * @param id
     * @return
     */
    Map<String, Object> queryRegistDetails(String channelCode, String hospitalCode, String id) throws Exception;

    /**
     * 获取预约挂号详情
     *
     * @param channelCode
     * @param hospitalCode
     * @param id           唯一ID
     * @return
     */
    Map<String, Object> queryAppointDetails(String channelCode, String hospitalCode, String id) throws Exception;


    Map<String, Object> loadingRegistDetails(String id);

    /**
     * 获取预约挂号、当日挂号详情
     *
     * @param channelCode
     * @param hospitalCode
     * @param recordId
     * @return
     */
    Map<String, Object> queryRegistAndAppointDetail(String channelCode, String hospitalCode, String recordId) throws Exception;

    /**
     * 取消预约
     *
     * @param channelCode
     * @param hospitalCode
     * @param recordId
     * @return
     */
    Map<String, Object> doCancelAppointByRecordId(String channelCode, String hospitalCode, String recordId) throws Exception;

    /**
     * 预约报到交易撤销
     *
     * @param channelCode
     * @param hospitalCode
     * @param recordId     挂号ID
     * @return
     */
    Map<String, Object> canceleAppointTransaction(String channelCode, String hospitalCode, String recordId, String patientId) throws Exception;

    /**
     * 当日挂号交易撤销
     *
     * @param channelCode
     * @param hospitalCode
     * @param recordId     挂号ID
     * @return
     */
    Map<String, Object> canceleRegisterTransaction(String channelCode, String hospitalCode, String recordId, String patientId) throws Exception;

    /**
     * 获取诊间挂号列表
     *
     * @param channelCode
     * @param hospitalCode
     * @param startTime
     * @param endTime
     * @param idCard
     * @return
     * @throws Exception
     */
    Map<String, Object> loadRegistRecordsForClinicCharge(String channelCode, String hospitalCode, String startTime, String endTime, String idCard, String userName) throws Exception;

    /**
     * 检查报告列表查询
     *
     * @param startDate
     * @param endDate
     * @param cardNo
     * @return
     */
    Map<String, Object> loadExamList(String startDate, String endDate, String cardNo) throws Exception;

    /**
     * 检查报告详情查询
     *
     * @param repId
     * @param cardNo
     * @return
     */
    Map<String, Object> loadExamDetails(String repId, String cardNo) throws Exception;

    /**
     * 检验报告列表查询
     *
     * @param startDate
     * @param endDate
     * @param cardNo
     * @return
     */
    Map<String, Object> loadLabMasterList(String startDate, String endDate, String cardNo) throws Exception;


    /**
     * 检验报告详情查询
     *
     * @param repId
     * @param cardNo
     * @return
     */
    Map<String, Object> loadLabMasterDetails(String repId, String cardNo) throws Exception;


    /**
     * 获取门诊收费开单记录列表
     *
     * @param channelCode   渠道编码
     * @param hospitalCode  医院编码
     * @param recordId      挂号序列
     * @param patientId     患者ID
     * @param source        挂号来源
     * @param user          用户名
     * @param payState      支付状态
     * @param clinicPayType 诊间结算类型
     * @return
     */
    Map<String, Object> loadClinicOrderList(String channelCode, String hospitalCode, String recordId, String patientId, String source, String user, String payState, String clinicPayType) throws Exception;

    /**
     * 获取门诊收费开单记录明细
     *
     * @param channelCode   渠道编码
     * @param hospitalCode  医院编码
     * @param recordId      挂号序列
     * @param patientId     患者ID
     * @param paySeq        支付序号
     * @param source        挂号来源
     * @param user          用户名
     * @param payState      支付状态
     * @param clinicPayType 诊间结算类型
     * @return
     */
    Map<String, Object> loadClinicOrderDetails(String channelCode, String hospitalCode, String recordId, String patientId, String paySeq, String source, String user, String payState, String clinicPayType) throws Exception;

    /**
     * 获取未完成缴费订单
     *
     * @param channelCode   渠道编码
     * @param hospitalCode  医院编码
     * @param recordId      挂号序列
     * @param patientId     患者ID
     * @param paySeq        支付序号
     * @param source        挂号来源
     * @param user          用户名
     * @param payState      支付状态
     * @param clinicPayType 诊间结算类型
     * @return
     */
    Map<String, Object> loadSaveCharge(String channelCode, String hospitalCode, String recordId, String patientId, String paySeq, String source, String user, String payState, String clinicPayType) throws Exception;

    /**
     * 获取未支付订单
     *
     * @param channelCode  渠道编码
     * @param hospitalCode 医院编码
     * @param idCard       身份证号
     * @param source       挂号来源
     * @param user         用户名
     * @param orderType    订单类型
     * @return
     */
    Map<String, Object> loadUnpaidOrders(String channelCode, String hospitalCode, String idCard, String source, String user, String orderType);

  /**
   * 排队叫号
   *
   * @param cardNo 身份证号
   * @param hospitalCode 医院编码
   * @return
   */
    Map<String, Object> loadCallNo(String cardNo, String hospitalCode) throws Exception;

    /**
     * 专家介绍列表
     *
     * @param deptCode 科室代码
     * @param queryType 医院编码
     * @return
     */
    Map<String, Object> doctorInfoList(String deptCode, String queryType) throws Exception;

    /**
     * 专家介绍详情
     *
     * @param deptCode 科室代码
     * @param doctorCode  医生代码
     * @param queryType 医院编码
     * @return
     */
  public Map<String, Object> doctorInfoDetails(String deptCode, String doctorCode, String queryType) throws Exception;

    /**
     * 医保信息验证
     *
     * @param channelCode
     * @param insurNo  医保卡号
     * @param password 密码
     * @param idNo 身份证号
     * @return
     */
    public Map<String, Object> insuranceInfo(String channelCode, String insurNo, String password, String idNo) throws Exception;

    /**
     * 当日挂号数据保存（加医保）
     *
     * @param channelCode  渠道编码
     * @param hospitalCode 医院编码
     * @param name         姓名
     * @param gender       性别
     * @param age          年龄
     * @param clinicLabel  号表
     * @param regFee       挂号费
     * @param period       时段
     * @param usePersonId  用户使用id
     * @param insurNo       身份证号
     * @param patientId    患者索引
     * @param chargeType   费别
     * @param clinicType   号类
     * @param deptCode     科室编码
     * @param doctorCode   医生编码
     * @param doctorName   医生姓名
     * @param insurNo       卡id
     * @param cardType     卡类型
     * @param payType   支付方式
     * @param insuranceType       医保类型
     * @param mtType     门特类型
     * @param syjyxm     生育就医项目
     * @param bcgsbm     本次工伤编码
     *
     * @return 挂号结果
     */
    public Map<String, Object> saveRegisterInsurance(String channelCode, String hospitalCode, String name, String gender, String age, String clinicLabel, String regFee, String period, String usePersonId, String idCard, String patientId, String chargeType, String clinicType, String deptCode, String doctorCode, String doctorName, String insurNo, String cardType, String payType, String insuranceType, String mtType, String syjyxm, String bcgsbm) throws Exception;

    /**
     * 获取科室门特信息
     *
     * @param channelCode
     * @return
     */
    public Map<String, Object> loadDeptInsurance(String channelCode) throws Exception;


    /**
     * 诊间结算数据保存
     *
     * @param channelCode  渠道编码
     * @param hospitalCode 医院编码
     * @param recordId     挂号序列
     * @param idCard       身份证号
     * @param resDate      挂号日期
     * @param transactNo   合同号
     * @param patientId    院内患者ID
     * @param visitNo      就诊号
     * @param paySeq       支付序号
     * @param cardType     就诊卡类型
     * @param cardNumber   就诊卡号
     * @param payType   支付方式
     * @param insuranceType       医保类型
     * @param mtType     门特类型
     * @param insurNo   医保卡号
     * @param syjyxm   生育就医项目
     * @return
     */
    public Map<String, Object> saveclinicChargeDataInsurance(String channelCode, String hospitalCode, String userName, String recordId, String idCard, String resDate, String transactNo, String patientId, String visitNo, String paySeq, String cardType, String cardNumber, String payType, String insuranceType, String mtType, String insurNo, String syjyxm) throws Exception;


//    /**
//     * 专家介绍列表
//     *
//     * @param title 标题
//     * @param titleName 标题名称
//     * @return
//     */
//    Map<String, Object> loadClinicService(String title, String titleName) throws Exception;

    /**
     * 预约报道(医保)
     *
     * @param channelCode         渠道编码
     * @param hospitalCode        医院编码
     * @param appointmentCode     预约编码
     * @param hisClinicAppointsId HIS预约ID
     * @param userPersonId        挂号用户id
     * @param recordId            挂号ID
     * @param insurNo             医保卡号
     * @param payType             支付类别
     * @param insuranceType       医保类型
     * @param mtType              门特类别
     * @param syjyxm              生育就医项目
     * @param bcgsbm              本次工伤编码
     * @return 预约报道结果
     */
    Map<String, Object> checkAppointmentStateInsurance(String channelCode, String hospitalCode, String appointmentCode, String hisClinicAppointsId, String patientId, String userPersonId, String recordId, String insurNo, String payType, String insuranceType, String mtType, String syjyxm, String bcgsbm) throws Exception;


    /**
     * 当日挂号交易撤销(医保)
     *
     * @param channelCode
     * @param hospitalCode
     * @param recordId     挂号ID
     * @return
     */
    Map<String, Object> canceleRegisterTransactionInsurance(String channelCode, String hospitalCode, String recordId, String patientId) throws Exception;


    /**
     * 预约报到交易撤销(医保)
     *
     * @param channelCode
     * @param hospitalCode
     * @param recordId     挂号ID
     * @return
     */
    Map<String, Object> canceleAppointTransactionInsurance(String channelCode, String hospitalCode, String recordId, String patientId) throws Exception;

    /**
     * 诊间结算支付撤销
     *
     * @param channelCode  渠道编码
     * @param hospitalCode 医院编码
     * @param recordId     挂号序列
     * @param patientId    患者ID
     * @param paySeq       支付序号
     * @return
     */
    public Map<String, Object> canceleClinicChargePaymentInsurance(String channelCode, String hospitalCode, String recordId, String patientId, String paySeq) throws Exception;

    /**
     * 诊间结算支付确认
     *
     * @param channelCode  渠道编码
     * @param hospitalCode 医院编码
     * @param paySeq       支付序号
     * @param openId       支付用户唯一ID：微信用户唯一ID、支付宝用户唯一ID、银行卡号
     * @param orderId      订单ID
     * @param patientId    患者ID
     * @param userPersonId 用户ID
     * @param orderFee     支付金额
     * @param payTime      支付时间
     * @param tradeNo      交易流水
     * @param moneyPay      交易流水
     * @return
     */
    public Map<String, Object> payConfirmForClinicChargeInsurance(String channelCode, String hospitalCode, String paySeq, String openId, String orderId, String patientId, String userPersonId, String orderFee, String payTime, String tradeNo, String moneyPay) throws Exception;

    /**
     * 预约报道支付确认接口(提供给支付平台支付完成之后回调)
     *
     * @param channelCode  渠道编码
     * @param hospitalCode 医院编码
     * @param recordId     挂号ID
     * @param openId       支付用户唯一ID：微信用户唯一ID、支付宝用户唯一ID、银行卡号
     * @param orderId      订单ID
     * @param patientId    患者ID
     * @param userPersonId 用户ID
     * @param orderFee     支付金额
     * @param payTime      支付时间
     * @param payType      支付类别
     * @param tradeNo      交易流水
     * @param moneyPay      交易流水
     * @return
     */
    public Map<String, Object>
    payConfirmForAppointmentInsurance(String channelCode, String hospitalCode, String recordId, String openId, String orderId, String patientId, String userPersonId, String orderFee, String payTime, String payType, String tradeNo, String moneyPay) throws Exception;


    /**
     * 挂号支付确认接口(提供给支付平台支付完成之后回调)
     *
     * @param channelCode  渠道编码
     * @param hospitalCode 医院编码
     * @param recordId     挂号ID
     * @param openId       支付用户唯一ID：微信用户唯一ID、支付宝用户唯一ID、银行卡号
     * @param orderId      订单ID
     * @param patientId    患者ID
     * @param userPersonId 用户ID
     * @param orderFee     支付金额
     * @param payTime      支付时间
     * @param payType      支付类别
     * @param tradeNo      交易流水
     * @param moneyPay      交易流水
     * @return
     */
    public Map<String, Object> payConfirmForRegisterInsurance(String channelCode, String hospitalCode, String recordId, String openId, String orderId, String patientId, String userPersonId, String orderFee, String payTime, String payType, String tradeNo, String moneyPay) throws Exception;

    /**
     * 住院患者信息查询
     *
     * @param channelCode  渠道编码
     * @param hospitalCode 医院编码
     * @param idNo     身份证号
     * @return
     */
    public Map<String, Object> personInHos(String channelCode, String hospitalCode, String idNo) throws Exception;

    /**
     * 住院患者预交金记录查询
     *
     * @param channelCode  渠道编码
     * @param hospitalCode 医院编码
     * @param idNo     身份证号
     * @return
     */
    public Map<String, Object> getPrePayments(String channelCode, String hospitalCode, String idNo) throws Exception;

    /**
     * 住院患者预交金缴纳
     *
     * @param channelCode  渠道编码
     * @param hospitalCode 医院编码
     * @param idCard     身份证号
     * @return
     */
    public Map<String, Object> doPrePayments(String channelCode, String hospitalCode, String idCard, String patientId, String amount, String tranNo,String moneyType, String streamNo) throws Exception;


    /**
     * 提取创建患者数据
     *
     * @param channelCode  渠道编码
     * @param hospitalCode 医院编码
     * @param idNo 身份证号
     * @param name 姓名
     * @param age 年龄
     * @param birthday 生日
     * @param sex 性别，中文（男、女、未知）
     * @param address 住址
     * @param nation 民族，中文（汉族，回族等）
     * @param birthPlace 出生地，代码
     * @param zipCode 邮政编码
     * @param phoneNumberHome 手机号码
     * @param identity 身份，中文
     * @param chargeType 费别，中文
     * @param maritalStatus 婚姻状况，代码
     * @param insurNo 医保卡号
     * @param insurPwd 医保卡密码
     * @param cardNo 卡号
     * @param cardType 卡类型
     * @param personNo 个人编码
     * @param isAnonymous 是否匿名
     * @return
     */
    public Map<String, Object> establishPatient(String channelCode, String hospitalCode, String idNo, String name, String age, String birthday, String sex, String address, String nation, String birthPlace, String zipCode, String phoneNumberHome, String identity, String chargeType, String maritalStatus, String insurNo, String insurPwd, String cardNo, String cardType, String personNo, String isAnonymous) throws Exception;




}
